//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "vParamLogiciel.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//---------------------------------------------------------------------------
//                      Constructeur
//---------------------------------------------------------------------------
__fastcall TvAParamLogiciel::TvAParamLogiciel(TComponent* Owner)
    : TForm(Owner)
{
    try {
        bbAjouter->Glyph->LoadFromResourceName((int)HInstance, "ID_GBOUTON_NOUVEAU");
        bbCopier->Glyph->LoadFromResourceName((int)HInstance, "ID_GBOUTON_DUPLIQUER");
        bbSupprimer->Glyph->LoadFromResourceName((int)HInstance, "ID_GBOUTON_SUPPRIMER");
        bbQuitter->Glyph->LoadFromResourceName((int)HInstance, "ID_ACTION_QUITTER_24");
        Afficher();
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//                  AFFICHAGE DANS LA LIST VIEW
//---------------------------------------------------------------------------
void __fastcall TvAParamLogiciel::Afficher()
{
    TdmWebHelp * dmWebHelp = NULL;
    TZZMySqlQuery * MaRequete = NULL;
    try {
        lvLogiciel->Items->Clear();
        dmWebHelp = new TdmWebHelp((TComponent*)0);


        MaRequete = new TZZMySqlQuery( (TComponent*)0);
        MaRequete->Database = dmWebHelp->dbWebHelp;

        MaRequete->Sql->Text =  "select log_nom,log_code,log_commentaire "
                                "from logiciels "
                                "order by log_nom";

        MaRequete->Open();
        MaRequete->First();
        
        TListItem  *ListItem;
        while(!MaRequete->Eof){
            ListItem = lvLogiciel->Items->Add();
            //affichage du logiciel avec son code_logiciel
            //-------------
            ListItem->SubItems->AddObject(asRequete(0) , (TObject*)nRequete(1) );
            //affichage des versions attachées
            //--------------------------------
            ListItem->SubItems->Add(CompterVersion( nRequete(1) ) );
            MaRequete->Next();
        }

        MaRequete->Sql->Clear();
        MaRequete->Close();

        lvLogiciel->Refresh();
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(MaRequete) {delete MaRequete; MaRequete = NULL;}
    if(dmWebHelp) {delete dmWebHelp; dmWebHelp = NULL;}
}
//---------------------------------------------------------------------------
//                      AJOUTER LOGICIEL
//---------------------------------------------------------------------------
void __fastcall TvAParamLogiciel::bbAjouterClick(TObject *Sender)
{
    TAjoutLogiciel * fLogiciel = NULL;
    try {

        fLogiciel = new TAjoutLogiciel((TComponent*)0);
        fLogiciel->ShowModal();

        Afficher();
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(fLogiciel) {delete fLogiciel; fLogiciel = NULL;}
}
//---------------------------------------------------------------------------
//                          COPIER LOGICIEL
//---------------------------------------------------------------------------
void __fastcall TvAParamLogiciel::bbCopierClick(TObject *Sender)
{
    TCopyLogiciel * fLogiciel = NULL;
    try {
        TItemStates selected = TItemStates() << isSelected;
        TListItem  *ListItem = lvLogiciel->Selected;
        if(lvLogiciel->SelCount != 0) {
            while(ListItem) {
                TCopyLogiciel * fLogiciel = NULL;
                fLogiciel = new TCopyLogiciel(  ListItem->SubItems->Strings[0],
                                                (int)ListItem->SubItems->Objects[0],
                                                false,
                                                (TComponent*)0);
                fLogiciel->ShowModal();
                if(fLogiciel) {delete fLogiciel; fLogiciel = NULL;}
                ListItem = lvLogiciel->GetNextItem(ListItem,sdAll,selected);
            }
            Afficher();
        }else {
            EICAttention(ERREUR_SELECTION_LOGICIEL);
        }
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(fLogiciel) {delete fLogiciel; fLogiciel = NULL;}
}
//---------------------------------------------------------------------------
//                  SUPPRIMER LE OU LES LOGICIEL(S) SELECTIONNES
//---------------------------------------------------------------------------
void __fastcall TvAParamLogiciel::bbSupprimerClick(TObject *Sender)
{
    CHistorique * Hist = NULL;
    try {
        int NombreRef   = 0;

        TItemStates selected = TItemStates() << isSelected;
        TListItem  *ListItem = lvLogiciel->Selected;
        if(lvLogiciel->SelCount != 0) {
            NombreRef = CompterVersion();
            if(NombreRef == 0) {
                AnsiString asMsg = EmptyStr;
                if(lvLogiciel->SelCount > 1) {
                    asMsg = "Confirmez vous la suppression des logiciels selectionnées ?";
                }else {
                    asMsg.sprintf("Confirmez vous la suppression du logiciel %s ?", ListItem->SubItems->Strings[0]);
                }

                if (MessageDlg(asMsg, mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrYes) {

                    Hist = new CHistorique();
                    while(ListItem) {
                        Supprimer((int)ListItem->SubItems->Objects[0]);
                        Hist->AjouterOperation( Histo_SUPPR_LOG, ListItem->SubItems->Strings[0] );
                        ListItem = lvLogiciel->GetNextItem(ListItem,sdAll,selected);
                    }
                    Afficher();

                }
            }else {
                if(lvLogiciel->SelCount == 1) {
                    EICAttention(SUPPRIMER_UN_LOGICIEL);
                }else {
                    EICAttention(SUPPRIMER_LES_LOGICIELS);
                }
            }
        }else {
            EICAttention(ERREUR_SELECTION_LOGICIEL);
        }
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(Hist) {delete Hist; Hist = NULL;}
}
//---------------------------------------------------------------------------
//         COMPTER LE NOMBRE DE VERSIONS (pour la méthode Afficher)
//---------------------------------------------------------------------------
int  __fastcall TvAParamLogiciel::CompterVersion(const int &nLogiciel)
{
    TdmWebHelp * dmWebHelp = NULL;
    TZZMySqlQuery * MaRequete = NULL;
    int nNbreVersion = 0;
    try {
        dmWebHelp = new TdmWebHelp((TComponent*)0);

        MaRequete = new TZZMySqlQuery( (TComponent*)0);
        MaRequete->Database = dmWebHelp->dbWebHelp;

        MaRequete->Sql->Text =  (AnsiString)"select count(ver_code) "+
                                            "from versions "+
                                            "where log_code="+nLogiciel;
        MaRequete->Open();
        MaRequete->First();

        nNbreVersion = nRequete(0);

        MaRequete->Sql->Clear();
        MaRequete->Close();

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);
        nNbreVersion = 0;}
    if(MaRequete) {delete MaRequete; MaRequete = NULL;}
    if(dmWebHelp) {delete dmWebHelp; dmWebHelp = NULL;}
    return nNbreVersion;
}
//---------------------------------------------------------------------------
//         COMPTER LE NOMBRE DE VERSIONS (pour la méthode Supprimer)
//---------------------------------------------------------------------------
int  __fastcall TvAParamLogiciel::CompterVersion()
{
    TdmWebHelp * dmWebHelp = NULL;
    TZZMySqlQuery * MaRequete = NULL;
    int nNbreVersion = 0;
    try {
        TItemStates selected = TItemStates() << isSelected;
        TListItem  *ListItem = lvLogiciel->Selected;

        dmWebHelp = new TdmWebHelp((TComponent*)0);

        MaRequete = new TZZMySqlQuery( (TComponent*)0);
        MaRequete->Database = dmWebHelp->dbWebHelp;

        if(lvLogiciel->SelCount != 0) {
            while(ListItem) {

                MaRequete->Sql->Text =  (AnsiString)"select count(ver_code) "+
                                                    "from versions "+
                                                    "where log_code="+(int)ListItem->SubItems->Objects[0];
                MaRequete->Open();
                MaRequete->First();
                nNbreVersion += nRequete(0);
                MaRequete->Sql->Clear();

                ListItem = lvLogiciel->GetNextItem(ListItem,sdAll,selected);
            }
        }
        MaRequete->Close();

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);
        nNbreVersion = 0;}
    if(MaRequete) {delete MaRequete; MaRequete = NULL;}
    if(dmWebHelp) {delete dmWebHelp; dmWebHelp = NULL;}
    return nNbreVersion;
}
//---------------------------------------------------------------------------
//                      SUPPRIMER UN LOGICIEL
//---------------------------------------------------------------------------
void __fastcall TvAParamLogiciel::Supprimer(const int &nLogiciel)
{
    TdmWebHelp * dmWebHelp = NULL;
    TZZMySqlQuery * MaRequete = NULL;
    try {
        dmWebHelp = new TdmWebHelp((TComponent*)0);

        MaRequete = new TZZMySqlQuery( (TComponent*)0);
        MaRequete->Database = dmWebHelp->dbWebHelp;

        MaRequete->Sql->Text =  (AnsiString)"delete from logiciels "+
                                            "where log_code="+nLogiciel;
        MaRequete->ExecSql();
        MaRequete->Sql->Clear();

        MaRequete->Sql->Text = "Commit";
        MaRequete->ExecSql();
        MaRequete->Sql->Clear();

        MaRequete->Close();
        

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(MaRequete) {delete MaRequete; MaRequete = NULL;}
    if(dmWebHelp) {delete dmWebHelp; dmWebHelp = NULL;}
}
//---------------------------------------------------------------------------
//                          Quitter
//---------------------------------------------------------------------------
void __fastcall TvAParamLogiciel::bbQuitterClick(TObject *Sender)
{
    try {
        Close();
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------

